 /**
 *
 *  @brief Enthaelt alle Verbindungen der Schaltung
 *
 *  @author Lukas Dudichum
 *  @date 4.06.2012
 *
 *  @version 0.3
 */
 
#pragma hdrstop

#include "TVerbindungsListe.h"

__fastcall TVerbindungsListe::TVerbindungsListe(){
	this->index = 0;
}

void __fastcall TVerbindungsListe::addVerbindung(TVerbindung* verbindung){
	this->verbindungen.push_back(verbindung);
}

void __fastcall TVerbindungsListe::removeVerbindung(TBauelementGUI* bauelement, Pin pin){

	for(unsigned int _index = 0; _index < this->getSize(); _index++){
	
		// Pin Teil einer gueltigen Verbindung
		if(pin != Pin::ERROR_){
			if(((this->verbindungen[_index]->from == bauelement)&&
				(this->verbindungen[_index]->fromPin == pin))||
				((this->verbindungen[_index]->to == bauelement)&&
				(this->verbindungen[_index]->toPin == pin))){
					// entfernt passende Verbindung
					std::vector<TVerbindung*>::iterator toDel = this->verbindungen.begin() + _index;
					this->verbindungen.erase(toDel);
					_index--;
				}
		// Pin Teil einer ungueltigen Verbindung - passende Verbindung entfernen
		}else{
		   if( (this->verbindungen[_index]->from == bauelement) ||
				( this->verbindungen[_index]->to == bauelement) ){
					std::vector<TVerbindung*>::iterator toDel = this->verbindungen.begin() + _index;
					this->verbindungen.erase(toDel);
					_index--;
				}
        }
	}


}

void __fastcall TVerbindungsListe::next(){
	this->index++;
}

TVerbindung* __fastcall TVerbindungsListe::getItem(){

	if(index < verbindungen.size()){
		TVerbindung* _tmp = this->verbindungen[index];
		return _tmp;
	}else{
		return NULL;
	}

}

unsigned int __fastcall TVerbindungsListe::getSize(){
	return this->verbindungen.size();
}


void __fastcall TVerbindungsListe::begin(){
	this->index=0;
}

__fastcall TVerbindungsListe::~TVerbindungsListe(){

}
//---------------------------------------------------------------------------
#pragma package(smart_init)
